package features.advance.leetcode.geometry.doublepointer.easy;


import java.util.regex.Pattern;

/**
 *125. 验证回文串
 *
 * 难度  简单
 *
 * 给定一个字符串，验证它是否是回文串，只考虑字母和数字字符，可以忽略字母的大小写。
 *
 * 说明：本题中，我们将空字符串定义为有效的回文串。
 *
 * 示例 1:
 *
 * 输入: "A man, a plan, a canal: Panama"
 * 输出: true
 * 示例 2:
 *
 * 输入: "race a car"
 * 输出: false
 *
 */
public class Solution125 {

    public boolean isPalindrome(String s){




        return Boolean.TRUE;
    }

    public static void main(String[] args) {

        String s = "A man, a plan, a canal: Panama";
        s = "Aa                      ";
        s = "race a car";
//        s = "Telegram, Margelet!";
        s = " ";
        boolean palindrome = new Solution125() {
            @Override
            public boolean isPalindrome(String s) {
                if (s == null) return false;
                if(s.length() == 0) return true;
                int p1 = 0;
                int p2 = s.length() - 1;
                String reg = "[a-zA-Z0-9]";
                Pattern compile = Pattern.compile(reg);
                s = s.toLowerCase();
                for (int i = 0; i < s.length(); i++) {
                    if (s.charAt(p1) == s.charAt(p2)){
                        if(p1 == p2) return true;
                        p1++;
                        p2--;
                    }else{
                        int bool = 2;
                        if(!compile.matcher(s.charAt(p1)+"").find()){
                            p1++;
                            bool--;
                        }
                        if(!compile.matcher(s.charAt(p2)+"").find()){
                            p2--;
                            bool--;
                        }
                        if (bool == 0) {

                        }
                    }
                    if (p1 == p2 || p1 - p2 == 1) return true;
                    if (p1 > p2) return false;
                }
                return false;
            }
        }.isPalindrome(s);


        System.out.println(palindrome);

    }


}
